package ltd.hanamaki.study.collectionframe;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Iterator;
import java.util.List;

/**
 * 集合 的定义 中数据类型必须是包装类
 */
public class ArrayListDemo {
    public static void main(String[] args) {
        /* 数组的定义 */
        /* 定义数组的数据类型可以是
        引用数据类型或者基本数据类型 */
        int arr[] = new int[2];
        /* 数组通过下标赋值 */
        arr[0] = 1;
        System.out.println(arr);

        /* 如何获得数组中的长度 */
        int length = arr.length;

        /* 数组的遍历 2 fori  for */


        /* 定义一个 ArrayList集合（容器） */
        /* 创建一个 存放 Integer 类型的  集合 */
        ArrayList<Integer> list = new ArrayList<>();
        System.out.println(list);
        /* 通过 add 来想 集合 中添加 值 */
        list.add(12);
        list.add(34);
        list.add(34);
        list.add(65);
        list.add(87);
        System.out.println(list);

        /* 从集合中取值 集合中的下标 ？ 0 */
        System.out.println(list.get(0));

        /* 向指定为中 添加  值 */
        list.add(2, 999);
        System.out.println(list);

        /* 修改下标 为 2的 元素的值 */
        list.set(2, 888);
        System.out.println(list);

        /* 如何获得集合的大小 */
        System.out.println(list.size());

        /* 排序 */
        Collections.sort(list);

        System.out.println(list);

        ArrayList<String> list1 = new ArrayList<>();

        list1.add("hello");
        list1.add("aello");
        list1.add("bello");
        list1.add("zello");
        Collections.sort(list1);

        System.out.println(list1);

        /* 集合转数组 */
        Object[] objects = list1.toArray();
        System.out.println(objects);

        /* 判断集合中是否有 想要的元素 */
        if (list.contains(34)) {
            /* 执行业务*/
            System.out.println("OK");
        } else {
            /* 其他的业务 */
            System.out.println("NO");
        }

        /* 集合的遍历的方式 */
        /* 通过下标来取值  */
        for (int i = 0; i < list.size(); i++) {
            System.out.println(list.get(i));
        }

        /* 增强 for循环 */
        for (Integer integer : list) {
            System.out.println(integer);
        }

        /* 使用 迭代器对象来取值 */
        Iterator<Integer> iterator = list.iterator();
        /* 判断迭代器对象中是否有值 */
        while (iterator.hasNext()) {
            Integer next = iterator.next();

            System.out.println(next);

        }

        /* 想要创建一个 可以存放 任何类型的 list 集合 */
        ArrayList<Object> list2 = new ArrayList<>();
        list2.add("test");
        list2.add(12);
        list2.add(true);
        list2.add('c');


    }
}
